<?php

class modelosxingresosPeer extends BasemodelosxingresosPeer
{




     public static function getBuscarDetalles($idCliente){
             //Metodo que Obtiene el total de las reparaciones por cliente
             //
             //Sin incluir las ya cobradas
             //Ahora incluye las de las facturas anuladas
             $criteria = new Criteria();
             $criteria->addJoin(modelosxingresosPeer::ORDENESSERVICIO_ID,ordenesservicioPeer::ID, Criteria::INNER_JOIN);
             $criteria->add(ordenesservicioPeer::CLIENTES_ID, $idCliente);
             $criteria->add(modelosxingresosPeer::REPARADO, true);
             $criteria->add(modelosxingresosPeer::GARANTIA, true, Criteria::NOT_EQUAL);
             $criteria->add(modelosxingresosPeer::ID,'modelosxingresos.id not in (Select facturadetalle.modelosxingresos_id from facturadetalle inner join facturas on facturadetalle.facturas_id = facturas.id where facturas.anulado = false)', Criteria::CUSTOM);
            // $this->modelosxingresos = new modelosxingresos();
             return  modelosxingresosPeer::doSelect ($criteria);
    }
    public static function getTrabajosRealizados($idModeloxIngreso){
           //trabajos realizados retorna una coleccion que contiene:
           // el detalle del Informe, el precio y el Iva de la Reparacion y la cantidad
           $precio = 0; $cantidad = 0 ; $iva = 0 ; $totalIva = 0;
           //Ya no tiene utilidad
           $conexion = Propel::GetConnection();
           $consulta = 'select informesxingresos.id,informesxingresos.precio,informesxingresos.cantidad, informesxingresos.iva, informesxingresos.estadosdereparacion_id,listadeprecios.detalle_Informe , listadeprecios.descripcion_trabajo as trabajo
                        from informesxingresos 
                        inner join (preciosxmodelos inner join listadeprecios on preciosxmodelos.listadeprecios_id = listadeprecios.id)
                        on informesxingresos.preciosxmodelos_id = preciosxmodelos.id
                        where informesxingresos.modelosxingresos_id = '.$idModeloxIngreso;
           $sentencia = $conexion->prepare($consulta);
           $sentencia->execute();
           $e = 0;
           $listafinal = array(array('id','detalleinforme','exentas' => 0,'trabajo','precio', 'cantidad','iva'));
           while($fila = $sentencia->fetch()){
               $listafinal[$e]['id'] = $fila['id'];   
               if ($fila['estadosdereparacion_id'] == 1)
                  $listafinal[$e]['detalleinforme'] = $fila['detalle_Informe'];
               else{
                   $listafinal[$e]['detalleinforme'] = 'El Trabajo '. strtoupper($fila['trabajo']).' no se pudo realizar';
               }
               $listafinal[$e]['trabajo'] = $fila['trabajo'];
               $listafinal[$e]['cantidad'] = $fila['cantidad'];
               $listafinal[$e]['precio'] = $fila['precio'];
               if(!($listafinal[$e]['iva'] = $fila['iva']))
                  $listafinal[$e]['exentas'] = $fila['precio'];
               else
                  $listafinal[$e]['exentas'] = 0 ;
               $e++;
           }
           if($e)
            return $listafinal;
           else
              return null;
         

    }
    public static function ListaDeEquiposReparados(Criteria $criteria){
        //$criteria = new Criteria();
        $criteria->add(modelosxingresosPeer::REPARADO,true);
        return modelosxingresosPeer::doSelect($criteria);
    }
    public static function ContarEquiposReparados(Criteria $criteria){
        //$criteria = new Criteria();
        $criteria->add(modelosxingresosPeer::REPARADO,true);
        return modelosxingresosPeer::doCount($criteria);
    }
    public static function ListaDeEquiposNoReparados(Criteria $criteria){
        //$criteria = new Criteria();
        $criteria->add(modelosxingresosPeer::REPARADO,false);
        return modelosxingresosPeer::doSelect($criteria);
    }
    public static function ListaDeFallas($modelosxingresos_id){
        $criteria = new Criteria;
        $criteria->add(fallasxingresosPeer::MODELOSXINGRESOS_ID,$modelosxingresos_id);
        return fallasxingresosPeer::doSelect($criteria);
    }
    public static function EstaEnGarantia($imei){
        //Funcion que verifica que este en periodo de garantia
        $fecha = time();
        $criteria = new Criteria();
        $criteria->add(modelosxingresosPeer::IMEI, ' modelosxingresos.IMEI= '.$imei.' having MAX(modelosxingresos.FECHAREPARACION) ', Criteria::CUSTOM);
        $equipo = modelosxingresosPeer::doSelectOne($criteria);
        if($equipo){
            if(($equipo->getFechareparacion('U') + 86400*$equipo->getPeriodoGarantia()) >= $fecha)
                    return true;
        }
        return false;
    }
    public static function getReportes($tecnico_id, $fecha_inicio, $fecha_fin , $criterio = null){
           /*cirterio 1 = reparado;
             criterio 2 = garantia;
             criterio 3 = reingreso;*/
           $criteria = new criteria;
           if ($criterio ==3){
               $criteria->addJoin(modelosxingresosPeer::ID,garantiaPeer::MODELOSXINGRESOS_ID);
               $criteria->add(garantiaPeer::REPARACION1,$tecnico_id);
               $criteria->add(garantiaPeer::FECHA_INGRESO,$fecha_inicio.' 00:00:00', Criteria::GREATER_EQUAL);
               $criteria->addAnd(garantiaPeer::FECHA_INGRESO,$fecha_fin.' 23:59:59',    Criteria::LESS_EQUAL);
               return modelosxingresosPeer::doSelect($criteria);
           }
           $criteria->add(modelosxingresosPeer::SF_GUARD_USER,$tecnico_id);
           $criteria->add(modelosxingresosPeer::REPARADO,true);
           if($criterio == 2)
                $criteria->add(modelosxingresosPeer::GARANTIA,true);
           $criteria->add(modelosxingresosPeer::FECHAREPARACION,$fecha_inicio.' 00:00:00', Criteria::GREATER_EQUAL);
           $criteria->addAnd(modelosxingresosPeer::FECHAREPARACION,$fecha_fin.' 23:59:59',    Criteria::LESS_EQUAL);
           $criteria->addAscendingOrderByColumn(self::ORDENESSERVICIO_ID);
           //$criteria->addAscendingOrderByColumn(self::FECHAREPARACION);
           return modelosxingresosPeer::doSelect($criteria);

    }
}
/*
 *            
 *
 */